// models/log_model.go
// =============================================================================
// | 包: models                                                              |
// | 功能: 定义应用程序的数据模型，映射数据库表结构                           |
// =============================================================================
package models

import "blog_server/models/enum" // 枚举包 - 提供日志相关枚举类型定义

// =============================================================================
// | 结构体: LogModel                                                        |
// | 功能: 日志数据模型                                                      |
// | 说明: 映射数据库中的日志表，存储系统日志和用户操作日志信息               |
// |----------------------------------------------------------------------------|
// | 字段: Model - Model - 基础模型，包含ID、CreatedAt、UpdatedAt字段         |
// | 字段: LogType - enum.LogType - 日志类型（LoginLogType/ActionLogType等）  |
// | 字段: Title - string - 日志标题，最大长度64字符                          |
// | 字段: Content - string - 日志详细内容                                    |
// | 字段: Level - enum.LogLevelType - 日志级别（LogInfoLevel/LogWarnLevel等）|
// | 字段: UserID - uint - 操作用户ID                                         |
// | 字段: UserModel - UserModel - 关联的用户模型，不JSON序列化               |
// | 字段: IP - string - 操作IP地址，最大长度32字符                           |
// | 字段: Addr - string - IP地址对应的地理位置，最大长度64字符               |
// | 字段: IsRead - bool - 日志是否已读                                       |
// | 字段: LoginStatus - bool - 登录状态（成功/失败）                         |
// | 字段: Username - string - 用户名，最大长度32字符                         |
// | 字段: Pwd - string - 密码（部分显示），最大长度32字符                     |
// | 字段: LoginType - enum.LoginType - 登录方式（UserPwdLoginType等）        |
// | 字段: ServiceName - string - 服务名称，最大长度32字符                     |
// =============================================================================
type LogModel struct {
	Model
	LogType     enum.LogType      `json:"logType"`                    // 日志类型（LoginLogType/ActionLogType等）
	Title       string            `gorm:"size:64" json:"title"`       // 日志标题，最大长度64字符
	Content     string            `json:"content"`                    // 日志详细内容
	Level       enum.LogLevelType `json:"level"`                      // 日志级别（LogInfoLevel/LogWarnLevel等）
	UserID      uint              `json:"userID"`                     // 操作用户ID
	UserModel   UserModel         `gorm:"foreignKey:UserID" json:"-"` // 关联的用户模型，不JSON序列化
	IP          string            `gorm:"size:32" json:"ip"`          // 操作IP地址，最大长度32字符
	Addr        string            `gorm:"size:64" json:"addr"`        // IP地址对应的地理位置，最大长度64字符
	IsRead      bool              `json:"isRead"`                     // 日志是否已读
	LoginStatus bool              `json:"loginStatus"`                // 登录状态（成功/失败）
	Username    string            `gorm:"size:32" json:"username"`    // 用户名，最大长度32字符
	Pwd         string            `gorm:"size:32" json:"pwd"`         // 密码（部分显示），最大长度32字符
	LoginType   enum.LoginType    `json:"loginType"`                  // 登录方式（UserPwdLoginType等）
	ServiceName string            `gorm:"size:32" json:"serviceName"` // 服务名称，最大长度32字符
}
